clc; clear; close all;

%% 参数设置
d_values = linspace(1.5, 1.9, 500);  % CO-GM 映射中 d 的范围
N_iter   = 1000;           % 总迭代步数
Transient= 200;            % 舞台瞬态步数
KeepNum  = 500;            % 分岔图记录步数
x0 = 0.5;                  % 初始条件 x0（论文中 CO-GM 的初始状态）
phi0 = 1;                  % 初始条件 phi0

%% 预分配内存
bifurcation = zeros(length(d_values), KeepNum);
LE1_values = zeros(1, length(d_values));
LE2_values = zeros(1, length(d_values));

%% 主循环：遍历每个 d 值
for i = 1:length(d_values)
    d = d_values(i);
    [LE1, LE2, xStore] = LE(@COGM, d, x0, phi0, N_iter, Transient, KeepNum);
    bifurcation(i, :) = xStore;
    LE1_values(i) = LE1;
    LE2_values(i) = LE2;
    fprintf('Progress: %.2f%%\n', i/length(d_values)*100);
end

%% 绘制 Lyapunov 指数
subplot(2,1,1); hold on; box on; grid on;
plot(d_values, LE1_values, 'r-', 'LineWidth', 1.5);
plot(d_values, LE2_values, 'b-', 'LineWidth', 1.5);
plot(d_values, zeros(size(d_values)), 'k--', 'LineWidth', 1.2);
xlabel('Coupling strength $d$', 'Interpreter', 'latex');
ylabel('Lyapunov Exponents');
legend('$\lambda_1$', '$\lambda_2$', 'Interpreter', 'latex');
title('Lyapunov Exponents of CO-GM Map');
xlim([min(d_values) max(d_values)]);
set(gca, 'FontSize', 12);
grid on;

%% 绘制分岔图
subplot(2,1,2); hold on; box on; grid on;
for i = 1:length(d_values)
    plot(d_values(i)*ones(1, KeepNum), bifurcation(i, :), '.', 'MarkerSize', 1, 'Color', [0.2 0.8 0.8]);
end
xlabel('Coupling strength $d$', 'Interpreter', 'latex');
ylabel('$x$', 'Interpreter', 'latex');
title(' CO-GM 模型分岔图');
xlim([min(d_values) max(d_values)]);
set(gca, 'FontSize', 12);
